home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / AOCE Sample Code / PowerTalk Access Modules / Sample SMSAM / SampleSMSAM Source / BuildingBlocks / EventCountdown.cp < prev    next >
Encoding:
Text File  |  1995-07-28  |  3.0 KB  |  132 lines  |  [TEXT/R*ch]

  1. /*
  2.     File:        EventCountdown.cp
  3.  
  4.     Copyright:    © 1991-1994 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Part of the AOCE Sample SMSAM Package.  Consult the license
  8.     which came with this software for your specific legal rights.
  9.  
  10. */
  11.  
  12.  
  13.  
  14. #ifndef __EVENTCOUNTDOWN__
  15. #include "EventCountdown.h"
  16. #endif
  17.  
  18. #ifndef __UTILITIES__
  19. #include "Utilities.h"
  20. #endif
  21.  
  22. /***********************************|****************************************/
  23.  
  24. TEventCountdown::TEventCountdown ( ) :
  25.     fDefaultInterval ( 0 ),
  26.     fExpirationAt ( 0 ),
  27.     fExpirationCount ( 0 )
  28. {
  29. }
  30.  
  31. /***********************************|****************************************/
  32.  
  33. TEventCountdown::TEventCountdown ( unsigned long defaultInterval ) :
  34.     fDefaultInterval ( defaultInterval ),
  35.     fExpirationCount ( 0 )
  36. {
  37.     fExpirationAt = NowDateTime() + fDefaultInterval ;
  38. }
  39.  
  40. /***********************************|****************************************/
  41.  
  42. TEventCountdown::~TEventCountdown ( )
  43. {
  44. }
  45.  
  46. /***********************************|****************************************/
  47.  
  48. Boolean TEventCountdown::ExpiredYet ( ) const
  49. {
  50.     Boolean result = ( fExpirationAt && ( fExpirationAt <= NowDateTime () ) );
  51.     return result;
  52. }
  53.  
  54. /***********************************|****************************************/
  55.  
  56. Boolean TEventCountdown::ResetTimer ( )
  57. {
  58.     if ( ExpiredYet () )
  59.         fExpirationCount ++;
  60.         
  61.     if ( fDefaultInterval )
  62.         fExpirationAt = NowDateTime() + fDefaultInterval;
  63.     else
  64.         fExpirationAt = 0;
  65.         
  66.     return ( fExpirationAt > 0 );
  67. }
  68.  
  69. /***********************************|****************************************/
  70.  
  71. Boolean TEventCountdown::ResetTimer ( unsigned long interval )
  72. {
  73.     if ( ExpiredYet () )
  74.         fExpirationCount ++;
  75.  
  76.     if ( interval )
  77.         fExpirationAt = NowDateTime() + interval;
  78.     else
  79.         fExpirationAt = 0;
  80.     
  81.     return ( fExpirationAt > 0 );
  82. }
  83.  
  84. /***********************************|****************************************/
  85.  
  86. Boolean TEventCountdown::SetExpiration ( unsigned long expirationAt )
  87. {
  88.     if ( ExpiredYet () )
  89.         fExpirationCount ++;
  90.  
  91.     fExpirationAt = expirationAt;
  92.     return ( fExpirationAt > 0 );
  93. }
  94.  
  95. /***********************************|****************************************/
  96.  
  97. unsigned long TEventCountdown::ExpirationCount ( ) const
  98. {
  99.     return fExpirationCount;
  100. }
  101.  
  102. /***********************************|****************************************/
  103.  
  104. ostream& TEventCountdown::operator << ( ostream& s )
  105. {
  106.     s << "[EventCountdown::";
  107.  
  108.     if ( fExpirationAt )
  109.         if ( fExpirationAt < NowDateTime () )
  110.             s << "Expired ";
  111.         else 
  112.         {    unsigned long duration = fExpirationAt - NowDateTime ();
  113.         
  114.             if ( duration < 60 )
  115.                 s << "Expire in " << duration << " secs ";
  116.             else if ( duration < 3600 )
  117.                 s << "Expire in " << duration / 60 << " min, " << ( duration % 60 ) << " secs.";
  118.             else
  119.             {    DateTimeRec    d;
  120.                 Secs2Date ( fExpirationAt, & d );
  121.                 s << "Expire @ " << d.month << "/" << d.day << "/" << d.year % 100 << " " << d.hour << " " << d.minute ;
  122.             }
  123.         }
  124.     else
  125.         s << "Disabled. ";
  126.         
  127.     s << " n:" << fExpirationCount << "] ";
  128.     return s;
  129. }
  130.  
  131. /***********************************|****************************************/
  132.